package jdk8;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * JDK8中的流式(Stream)操作
 * JDK8中推出Stream的目的是为了更好的对集合数据进行处理(排序，统计，映射....)
 * Stream应用的步骤：
 * 1)创建Stream对象
 * 2)执行中间操作(排序,筛选，...)
 * 3)终止操作(结束的一个操作)
 */
public class StreamDemo01 {
    public static void main(String[] args)
    {
        //定义集合
        List<Integer> list1 = Arrays.asList(10, 8, 3, 11, 15, 7, 9, 6);
        List<Integer> list2 = Arrays.asList(6, 5, 3, 2, 2, 20, 9,9);
        //1.对list1的内容进行排序并输出排序结果
        //对集合元素进行排序并输出其结果
        Stream<Integer> stream=list1.stream();
        //对集合元素进行排序(默认升序排序)
        Stream<Integer> sorted = stream.sorted();
        //输出排序结果
        sorted.forEach((n)-> System.out.println(n));
        //2.对list2的内容进行排序并输出排序结果
        List<Integer> list3=
                list2.stream()//创建流对象
                     .distinct() //去重
                     .map(e0->e0*2) //映射操作，将集合中的每个元素乘以2
                     .sorted((e1,e2)->e2-e1)//降序
                     .collect(Collectors.toList());//将排序结果存储新的集合中
        System.out.println(list3);
    }
}
